home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / drivers / mrdo.c < prev    next >
C/C++ Source or Header  |  2000-04-04  |  16KB  |  439 lines

  1. /***************************************************************************
  2.  
  3. Mr Do! memory map (preliminary)
  4.  
  5. driver by Nicola Salmoria
  6.  
  7. 0000-7fff ROM
  8. 8000-83ff color RAM 1
  9. 8400-87ff video RAM 1
  10. 8800-8bff color RAM 2
  11. 8c00-8fff video RAM 2
  12. e000-efff RAM
  13.  
  14. memory mapped ports:
  15.  
  16. read:
  17. 9803      SECRE 1/6-J2-11
  18. a000      IN0
  19. a001      IN1
  20. a002      DSW1
  21. a003      DSW2
  22.  
  23. write:
  24. 9000-90ff sprites, 64 groups of 4 bytes.
  25. 9800      flip (bit 0) playfield priority selector? (bits 1-3)
  26. 9801      sound port 1
  27. 9802      sound port 2
  28. f000      playfield 0 Y scroll position (not used by Mr. Do!)
  29. f800      playfield 0 X scroll position
  30.  
  31. ***************************************************************************/
  32.  
  33. #include "driver.h"
  34. #include "vidhrdw/generic.h"
  35. #include "cpu/z80/z80.h"
  36.  
  37.  
  38.  
  39. extern unsigned char *mrdo_bgvideoram,*mrdo_fgvideoram;
  40. WRITE_HANDLER( mrdo_bgvideoram_w );
  41. WRITE_HANDLER( mrdo_fgvideoram_w );
  42. WRITE_HANDLER( mrdo_scrollx_w );
  43. WRITE_HANDLER( mrdo_scrolly_w );
  44. WRITE_HANDLER( mrdo_flipscreen_w );
  45. void mrdo_vh_convert_color_prom(unsigned char *palette, unsigned short *colortable,const unsigned char *color_prom);
  46. int mrdo_vh_start(void);
  47. void mrdo_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
  48.  
  49.  
  50.  
  51. /* this looks like some kind of protection. The game doesn't clear the screen */
  52. /* if a read from this address doesn't return the value it expects. */
  53. READ_HANDLER( mrdo_SECRE_r )
  54. {
  55.     unsigned char *RAM = memory_region(REGION_CPU1);
  56.     return RAM[ cpu_get_reg(Z80_HL) ];
  57. }
  58.  
  59.  
  60.  
  61. static struct MemoryReadAddress readmem[] =
  62. {
  63.     { 0x0000, 0x7fff, MRA_ROM },
  64.     { 0x8000, 0x8fff, MRA_RAM },    /* video and color RAM */
  65.     { 0x9803, 0x9803, mrdo_SECRE_r },
  66.     { 0xa000, 0xa000, input_port_0_r },    /* IN0 */
  67.     { 0xa001, 0xa001, input_port_1_r },    /* IN1 */
  68.     { 0xa002, 0xa002, input_port_2_r },    /* DSW1 */
  69.     { 0xa003, 0xa003, input_port_3_r },    /* DSW2 */
  70.     { 0xe000, 0xefff, MRA_RAM },
  71.     { -1 }    /* end of table */
  72. };
  73.  
  74. static struct MemoryWriteAddress writemem[] =
  75. {
  76.     { 0x0000, 0x7fff, MWA_ROM },
  77.     { 0x8000, 0x87ff, mrdo_bgvideoram_w, &mrdo_bgvideoram },
  78.     { 0x8800, 0x8fff, mrdo_fgvideoram_w, &mrdo_fgvideoram },
  79.     { 0x9000, 0x90ff, MWA_RAM, &spriteram, &spriteram_size },
  80.     { 0x9800, 0x9800, mrdo_flipscreen_w },    /* screen flip + playfield priority */
  81.     { 0x9801, 0x9801, SN76496_0_w },
  82.     { 0x9802, 0x9802, SN76496_1_w },
  83.     { 0xe000, 0xefff, MWA_RAM },
  84.     { 0xf000, 0xf7ff, mrdo_scrollx_w },
  85.     { 0xf800, 0xffff, mrdo_scrolly_w },
  86.     { -1 }    /* end of table */
  87. };
  88.  
  89.  
  90. INPUT_PORTS_START( mrdo )
  91.     PORT_START    /* IN0 */
  92.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_4WAY )
  93.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_4WAY )
  94.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY )
  95.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_4WAY )
  96.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
  97.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
  98.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
  99.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_TILT )
  100.  
  101.     PORT_START    /* IN1 */
  102.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_4WAY | IPF_COCKTAIL )
  103.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_4WAY | IPF_COCKTAIL )
  104.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY | IPF_COCKTAIL )
  105.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_4WAY | IPF_COCKTAIL )
  106.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
  107.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
  108.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
  109.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
  110.  
  111.     PORT_START    /* DSW0 */
  112.     PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) )
  113.     PORT_DIPSETTING(    0x03, "Easy" )
  114.     PORT_DIPSETTING(    0x02, "Medium" )
  115.     PORT_DIPSETTING(    0x01, "Hard" )
  116.     PORT_DIPSETTING(    0x00, "Hardest" )
  117.     PORT_BITX(    0x04, 0x04, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Rack Test", KEYCODE_F1, IP_JOY_NONE )
  118.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  119.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  120.     PORT_DIPNAME( 0x08, 0x08, "Special" )
  121.     PORT_DIPSETTING(    0x08, "Easy" )
  122.     PORT_DIPSETTING(    0x00, "Hard" )
  123.     PORT_DIPNAME( 0x10, 0x10, "Extra" )
  124.     PORT_DIPSETTING(    0x10, "Easy" )
  125.     PORT_DIPSETTING(    0x00, "Hard" )
  126.     PORT_DIPNAME( 0x20, 0x00, DEF_STR( Cabinet ) )
  127.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  128.     PORT_DIPSETTING(    0x20, DEF_STR( Cocktail ) )
  129.     PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Lives ) )
  130.     PORT_DIPSETTING(    0x00, "2" )
  131.     PORT_DIPSETTING(    0xc0, "3" )
  132.     PORT_DIPSETTING(    0x80, "4" )
  133.     PORT_DIPSETTING(    0x40, "5" )
  134.  
  135.     PORT_START    /* DSW1 */
  136.     PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Coin_B ) )
  137.     PORT_DIPSETTING(    0x06, DEF_STR( 4C_1C ) )
  138.     PORT_DIPSETTING(    0x08, DEF_STR( 3C_1C ) )
  139.     PORT_DIPSETTING(    0x0a, DEF_STR( 2C_1C ) )
  140.     PORT_DIPSETTING(    0x07, DEF_STR( 3C_2C ) )
  141.     PORT_DIPSETTING(    0x0f, DEF_STR( 1C_1C ) )
  142.     PORT_DIPSETTING(    0x09, DEF_STR( 2C_3C ) )
  143.     PORT_DIPSETTING(    0x0e, DEF_STR( 1C_2C ) )
  144.     PORT_DIPSETTING(    0x0d, DEF_STR( 1C_3C ) )
  145.     PORT_DIPSETTING(    0x0c, DEF_STR( 1C_4C ) )
  146.     PORT_DIPSETTING(    0x0b, DEF_STR( 1C_5C ) )
  147.     PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) )
  148.     /* settings 0x01 thru 0x05 all give 1 Coin/1 Credit */
  149.     PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coin_A ) )
  150.     PORT_DIPSETTING(    0x60, DEF_STR( 4C_1C ) )
  151.     PORT_DIPSETTING(    0x80, DEF_STR( 3C_1C ) )
  152.     PORT_DIPSETTING(    0xa0, DEF_STR( 2C_1C ) )
  153.     PORT_DIPSETTING(    0x70, DEF_STR( 3C_2C ) )
  154.     PORT_DIPSETTING(    0xf0, DEF_STR( 1C_1C ) )
  155.     PORT_DIPSETTING(    0x90, DEF_STR( 2C_3C ) )
  156.     PORT_DIPSETTING(    0xe0, DEF_STR( 1C_2C ) )
  157.     PORT_DIPSETTING(    0xd0, DEF_STR( 1C_3C ) )
  158.     PORT_DIPSETTING(    0xc0, DEF_STR( 1C_4C ) )
  159.     PORT_DIPSETTING(    0xb0, DEF_STR( 1C_5C ) )
  160.     PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) )
  161.     /* settings 0x10 thru 0x50 all give 1 Coin/1 Credit */
  162. INPUT_PORTS_END
  163.  
  164.  
  165.  
  166. static struct GfxLayout charlayout =
  167. {
  168.     8,8,    /* 8*8 characters */
  169.     512,    /* 512 characters */
  170.     2,    /* 2 bits per pixel */
  171.     { 0, 512*8*8 },    /* the two bitplanes are separated */
  172.     { 7, 6, 5, 4, 3, 2, 1, 0 },
  173.     { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
  174.     8*8    /* every char takes 8 consecutive bytes */
  175. };
  176. static struct GfxLayout spritelayout =
  177. {
  178.     16,16,    /* 16*16 sprites */
  179.     128,    /* 128 sprites */
  180.     2,    /* 2 bits per pixel */
  181.     { 4, 0 },    /* the two bitplanes for 4 pixels are packed into one byte */
  182.     { 3, 2, 1, 0, 8+3, 8+2, 8+1, 8+0,
  183.             16+3, 16+2, 16+1, 16+0, 24+3, 24+2, 24+1, 24+0 },
  184.     { 0*16, 2*16, 4*16, 6*16, 8*16, 10*16, 12*16, 14*16,
  185.             16*16, 18*16, 20*16, 22*16, 24*16, 26*16, 28*16, 30*16 },
  186.     64*8    /* every sprite takes 64 consecutive bytes */
  187. };
  188.  
  189.  
  190.  
  191. static struct GfxDecodeInfo gfxdecodeinfo[] =
  192. {
  193.     { REGION_GFX1, 0, &charlayout,      0, 64 },    /* colors 0-255 directly mapped */
  194.     { REGION_GFX2, 0, &charlayout,      0, 64 },
  195.     { REGION_GFX3, 0, &spritelayout, 4*64, 16 },
  196.     { -1 } /* end of array */
  197. };
  198.  
  199.  
  200.  
  201. static struct SN76496interface sn76496_interface =
  202. {
  203.     2,    /* 2 chips */
  204.     { 4000000, 4000000 },    /* 4 MHz */
  205.     { 50, 50 }
  206. };
  207.  
  208.  
  209.  
  210. static struct MachineDriver machine_driver_mrdo =
  211. {
  212.     /* basic machine hardware */
  213.     {
  214.         {
  215.             CPU_Z80,
  216.             4000000,    /* 4 Mhz */
  217.             readmem,writemem,0,0,
  218.             interrupt,1
  219.         }
  220.     },
  221.     60, DEFAULT_60HZ_VBLANK_DURATION,    /* frames per second, vblank duration */
  222.     1,    /* single CPU, no need for interleaving */
  223.     0,
  224.  
  225.     /* video hardware */
  226.     32*8, 32*8, { 1*8, 31*8-1, 4*8, 28*8-1 },
  227.     gfxdecodeinfo,
  228.     256,64*4+16*4,
  229.     mrdo_vh_convert_color_prom,
  230.  
  231.     VIDEO_TYPE_RASTER,
  232.     0,
  233.     mrdo_vh_start,
  234.     0,
  235.     mrdo_vh_screenrefresh,
  236.  
  237.     /* sound hardware */
  238.     0,0,0,0,
  239.     {
  240.         {
  241.             SOUND_SN76496,
  242.             &sn76496_interface
  243.         }
  244.     }
  245. };
  246.  
  247.  
  248.  
  249. /***************************************************************************
  250.  
  251.   Game driver(s)
  252.  
  253. ***************************************************************************/
  254.  
  255. ROM_START( mrdo )
  256.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  257.     ROM_LOAD( "a4-01.bin",    0x0000, 0x2000, 0x03dcfba2 )
  258.     ROM_LOAD( "c4-02.bin",    0x2000, 0x2000, 0x0ecdd39c )
  259.     ROM_LOAD( "e4-03.bin",    0x4000, 0x2000, 0x358f5dc2 )
  260.     ROM_LOAD( "f4-04.bin",    0x6000, 0x2000, 0xf4190cfc )
  261.  
  262.     ROM_REGION( 0x2000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  263.     ROM_LOAD( "s8-09.bin",    0x0000, 0x1000, 0xaa80c5b6 )
  264.     ROM_LOAD( "u8-10.bin",    0x1000, 0x1000, 0xd20ec85b )
  265.  
  266.     ROM_REGION( 0x2000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  267.     ROM_LOAD( "r8-08.bin",    0x0000, 0x1000, 0xdbdc9ffa )
  268.     ROM_LOAD( "n8-07.bin",    0x1000, 0x1000, 0x4b9973db )
  269.  
  270.     ROM_REGION( 0x2000, REGION_GFX3 | REGIONFLAG_DISPOSE )
  271.     ROM_LOAD( "h5-05.bin",    0x0000, 0x1000, 0xe1218cc5 )
  272.     ROM_LOAD( "k5-06.bin",    0x1000, 0x1000, 0xb1f68b04 )
  273.  
  274.     ROM_REGION( 0x0060, REGION_PROMS )
  275.     ROM_LOAD( "u02--2.bin",   0x0000, 0x0020, 0x238a65d7 )    /* palette (high bits) */
  276.     ROM_LOAD( "t02--3.bin",   0x0020, 0x0020, 0xae263dc0 )    /* palette (low bits) */
  277.     ROM_LOAD( "f10--1.bin",   0x0040, 0x0020, 0x16ee4ca2 )    /* sprite color lookup table */
  278. ROM_END
  279.  
  280. ROM_START( mrdot )
  281.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  282.     ROM_LOAD( "d1",           0x0000, 0x2000, 0x3dcd9359 )
  283.     ROM_LOAD( "d2",           0x2000, 0x2000, 0x710058d8 )
  284.     ROM_LOAD( "d3",           0x4000, 0x2000, 0x467d12d8 )
  285.     ROM_LOAD( "d4",           0x6000, 0x2000, 0xfce9afeb )
  286.  
  287.     ROM_REGION( 0x2000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  288.     ROM_LOAD( "d9",           0x0000, 0x1000, 0xde4cfe66 )
  289.     ROM_LOAD( "d10",          0x1000, 0x1000, 0xa6c2f38b )
  290.  
  291.     ROM_REGION( 0x2000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  292.     ROM_LOAD( "r8-08.bin",    0x0000, 0x1000, 0xdbdc9ffa )
  293.     ROM_LOAD( "n8-07.bin",    0x1000, 0x1000, 0x4b9973db )
  294.  
  295.     ROM_REGION( 0x2000, REGION_GFX3 | REGIONFLAG_DISPOSE )
  296.     ROM_LOAD( "h5-05.bin",    0x0000, 0x1000, 0xe1218cc5 )
  297.     ROM_LOAD( "k5-06.bin",    0x1000, 0x1000, 0xb1f68b04 )
  298.  
  299.     ROM_REGION( 0x0060, REGION_PROMS )
  300.     ROM_LOAD( "u02--2.bin",   0x0000, 0x0020, 0x238a65d7 )    /* palette (high bits) */
  301.     ROM_LOAD( "t02--3.bin",   0x0020, 0x0020, 0xae263dc0 )    /* palette (low bits) */
  302.     ROM_LOAD( "f10--1.bin",   0x0040, 0x0020, 0x16ee4ca2 )    /* sprite color lookup table */
  303. ROM_END
  304.  
  305. ROM_START( mrdofix )
  306.     ROM_REGION( 0x10000, REGION_CPU1 ) /* 64k for code */
  307.     ROM_LOAD( "d1",           0x0000, 0x2000, 0x3dcd9359 )
  308.     ROM_LOAD( "d2",           0x2000, 0x2000, 0x710058d8 )
  309.     ROM_LOAD( "dofix.d3",     0x4000, 0x2000, 0x3a7d039b )
  310.     ROM_LOAD( "dofix.d4",     0x6000, 0x2000, 0x32db845f )
  311.  
  312.     ROM_REGION( 0x2000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  313.     ROM_LOAD( "d9",           0x0000, 0x1000, 0xde4cfe66 )
  314.     ROM_LOAD( "d10",          0x1000, 0x1000, 0xa6c2f38b )
  315.  
  316.     ROM_REGION( 0x2000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  317.     ROM_LOAD( "r8-08.bin",    0x0000, 0x1000, 0xdbdc9ffa )
  318.     ROM_LOAD( "n8-07.bin",    0x1000, 0x1000, 0x4b9973db )
  319.  
  320.     ROM_REGION( 0x2000, REGION_GFX3 | REGIONFLAG_DISPOSE )
  321.     ROM_LOAD( "h5-05.bin",    0x0000, 0x1000, 0xe1218cc5 )
  322.     ROM_LOAD( "k5-06.bin",    0x1000, 0x1000, 0xb1f68b04 )
  323.  
  324.     ROM_REGION( 0x0060, REGION_PROMS )
  325.     ROM_LOAD( "u02--2.bin",   0x0000, 0x0020, 0x238a65d7 )  /* palette (high bits) */
  326.     ROM_LOAD( "t02--3.bin",   0x0020, 0x0020, 0xae263dc0 )  /* palette (low bits) */
  327.     ROM_LOAD( "f10--1.bin",   0x0040, 0x0020, 0x16ee4ca2 )  /* sprite color lookup table */
  328. ROM_END
  329.  
  330. ROM_START( mrlo )
  331.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  332.     ROM_LOAD( "mrlo01.bin",   0x0000, 0x2000, 0x6f455e7d )
  333.     ROM_LOAD( "d2",           0x2000, 0x2000, 0x710058d8 )
  334.     ROM_LOAD( "dofix.d3",     0x4000, 0x2000, 0x3a7d039b )
  335.     ROM_LOAD( "mrlo04.bin",   0x6000, 0x2000, 0x49c10274 )
  336.  
  337.     ROM_REGION( 0x2000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  338.     ROM_LOAD( "mrlo09.bin",   0x0000, 0x1000, 0xfdb60d0d )
  339.     ROM_LOAD( "mrlo10.bin",   0x1000, 0x1000, 0x0492c10e )
  340.  
  341.     ROM_REGION( 0x2000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  342.     ROM_LOAD( "r8-08.bin",    0x0000, 0x1000, 0xdbdc9ffa )
  343.     ROM_LOAD( "n8-07.bin",    0x1000, 0x1000, 0x4b9973db )
  344.  
  345.     ROM_REGION( 0x2000, REGION_GFX3 | REGIONFLAG_DISPOSE )
  346.     ROM_LOAD( "h5-05.bin",    0x0000, 0x1000, 0xe1218cc5 )
  347.     ROM_LOAD( "k5-06.bin",    0x1000, 0x1000, 0xb1f68b04 )
  348.  
  349.     ROM_REGION( 0x0060, REGION_PROMS )
  350.     ROM_LOAD( "u02--2.bin",   0x0000, 0x0020, 0x238a65d7 )    /* palette (high bits) */
  351.     ROM_LOAD( "t02--3.bin",   0x0020, 0x0020, 0xae263dc0 )    /* palette (low bits) */
  352.     ROM_LOAD( "f10--1.bin",   0x0040, 0x0020, 0x16ee4ca2 )    /* sprite color lookup table */
  353. ROM_END
  354.  
  355. ROM_START( mrdu )
  356.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  357.     ROM_LOAD( "d1",           0x0000, 0x2000, 0x3dcd9359 )
  358.     ROM_LOAD( "d2",           0x2000, 0x2000, 0x710058d8 )
  359.     ROM_LOAD( "d3",           0x4000, 0x2000, 0x467d12d8 )
  360.     ROM_LOAD( "du4.bin",      0x6000, 0x2000, 0x893bc218 )
  361.  
  362.     ROM_REGION( 0x2000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  363.     ROM_LOAD( "du9.bin",      0x0000, 0x1000, 0x4090dcdc )
  364.     ROM_LOAD( "du10.bin",     0x1000, 0x1000, 0x1e63ab69 )
  365.  
  366.     ROM_REGION( 0x2000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  367.     ROM_LOAD( "r8-08.bin",    0x0000, 0x1000, 0xdbdc9ffa )
  368.     ROM_LOAD( "n8-07.bin",    0x1000, 0x1000, 0x4b9973db )
  369.  
  370.     ROM_REGION( 0x2000, REGION_GFX3 | REGIONFLAG_DISPOSE )
  371.     ROM_LOAD( "h5-05.bin",    0x0000, 0x1000, 0xe1218cc5 )
  372.     ROM_LOAD( "k5-06.bin",    0x1000, 0x1000, 0xb1f68b04 )
  373.  
  374.     ROM_REGION( 0x0060, REGION_PROMS )
  375.     ROM_LOAD( "u02--2.bin",   0x0000, 0x0020, 0x238a65d7 )    /* palette (high bits) */
  376.     ROM_LOAD( "t02--3.bin",   0x0020, 0x0020, 0xae263dc0 )    /* palette (low bits) */
  377.     ROM_LOAD( "f10--1.bin",   0x0040, 0x0020, 0x16ee4ca2 )    /* sprite color lookup table */
  378. ROM_END
  379.  
  380. ROM_START( mrdoy )
  381.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  382.     ROM_LOAD( "dosnow.1",     0x0000, 0x2000, 0xd3454e2c )
  383.     ROM_LOAD( "dosnow.2",     0x2000, 0x2000, 0x5120a6b2 )
  384.     ROM_LOAD( "dosnow.3",     0x4000, 0x2000, 0x96416dbe )
  385.     ROM_LOAD( "dosnow.4",     0x6000, 0x2000, 0xc05051b6 )
  386.  
  387.     ROM_REGION( 0x2000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  388.     ROM_LOAD( "dosnow.9",     0x0000, 0x1000, 0x85d16217 )
  389.     ROM_LOAD( "dosnow.10",    0x1000, 0x1000, 0x61a7f54b )
  390.  
  391.     ROM_REGION( 0x2000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  392.     ROM_LOAD( "dosnow.8",     0x0000, 0x1000, 0x2bd1239a )
  393.     ROM_LOAD( "dosnow.7",     0x1000, 0x1000, 0xac8ffddf )
  394.  
  395.     ROM_REGION( 0x2000, REGION_GFX3 | REGIONFLAG_DISPOSE )
  396.     ROM_LOAD( "dosnow.5",     0x0000, 0x1000, 0x7662d828 )
  397.     ROM_LOAD( "dosnow.6",     0x1000, 0x1000, 0x413f88d1 )
  398.  
  399.     ROM_REGION( 0x0060, REGION_PROMS )
  400.     ROM_LOAD( "u02--2.bin",   0x0000, 0x0020, 0x238a65d7 )    /* palette (high bits) */
  401.     ROM_LOAD( "t02--3.bin",   0x0020, 0x0020, 0xae263dc0 )    /* palette (low bits) */
  402.     ROM_LOAD( "f10--1.bin",   0x0040, 0x0020, 0x16ee4ca2 )    /* sprite color lookup table */
  403. ROM_END
  404.  
  405. ROM_START( yankeedo )
  406.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  407.     ROM_LOAD( "a4-01.bin",    0x0000, 0x2000, 0x03dcfba2 )
  408.     ROM_LOAD( "yd_d2.c4",     0x2000, 0x2000, 0x7c9d7ce0 )
  409.     ROM_LOAD( "e4-03.bin",    0x4000, 0x2000, 0x358f5dc2 )
  410.     ROM_LOAD( "f4-04.bin",    0x6000, 0x2000, 0xf4190cfc )
  411.  
  412.     ROM_REGION( 0x2000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  413.     ROM_LOAD( "s8-09.bin",    0x0000, 0x1000, 0xaa80c5b6 )
  414.     ROM_LOAD( "u8-10.bin",    0x1000, 0x1000, 0xd20ec85b )
  415.  
  416.     ROM_REGION( 0x2000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  417.     ROM_LOAD( "r8-08.bin",    0x0000, 0x1000, 0xdbdc9ffa )
  418.     ROM_LOAD( "n8-07.bin",    0x1000, 0x1000, 0x4b9973db )
  419.  
  420.     ROM_REGION( 0x2000, REGION_GFX3 | REGIONFLAG_DISPOSE )
  421.     ROM_LOAD( "yd_d5.h5",     0x0000, 0x1000, 0xf530b79b )
  422.     ROM_LOAD( "yd_d6.k5",     0x1000, 0x1000, 0x790579aa )
  423.  
  424.     ROM_REGION( 0x0060, REGION_PROMS )
  425.     ROM_LOAD( "u02--2.bin",   0x0000, 0x0020, 0x238a65d7 )    /* palette (high bits) */
  426.     ROM_LOAD( "t02--3.bin",   0x0020, 0x0020, 0xae263dc0 )    /* palette (low bits) */
  427.     ROM_LOAD( "f10--1.bin",   0x0040, 0x0020, 0x16ee4ca2 )    /* sprite color lookup table */
  428. ROM_END
  429.  
  430.  
  431.  
  432. GAME( 1982, mrdo,     0,    mrdo, mrdo, 0, ROT270, "Universal", "Mr. Do! (Universal)" )
  433. GAME( 1982, mrdot,    mrdo, mrdo, mrdo, 0, ROT270, "Universal (Taito license)", "Mr. Do! (Taito)" )
  434. GAME( 1982, mrdofix,  mrdo, mrdo, mrdo, 0, ROT270, "Universal (Taito license)", "Mr. Do! (bugfixed)" )
  435. GAME( 1982, mrlo,     mrdo, mrdo, mrdo, 0, ROT270, "bootleg", "Mr. Lo!" )
  436. GAME( 1982, mrdu,     mrdo, mrdo, mrdo, 0, ROT270, "bootleg", "Mr. Du!" )
  437. GAME( 1982, mrdoy,    mrdo, mrdo, mrdo, 0, ROT270, "bootleg", "Mr. Do! (Yukidaruma)" )
  438. GAME( 1982, yankeedo, mrdo, mrdo, mrdo, 0, ROT270, "hack", "Yankee DO!" )
  439.